#ifndef _FONT_MANAGER_H
#define _FONT_MANAGER_H

#include <map>
#include <string>
#include <boost/shared_ptr.hpp>

class FreeTypeFont;

class FontManager
{
private:
    static FontManager* m_manager;
    std::map<std::pair<std::string, int>, boost::shared_ptr<FreeTypeFont>> m_fonts;

public:
    // Constructors and destructors
    virtual ~FontManager(void);

    // Others
    bool addFont(boost::shared_ptr<FreeTypeFont> font);
    bool hasFont(const std::pair<std::string, int>& fontDetails);
    void purgeFonts(void);

    // Getters
    static FontManager* getInstance(void);
    boost::shared_ptr<FreeTypeFont> getFont(const std::pair<std::string, int>& fontDetails) const;

private:
    FontManager(void);
};

#endif
